#ifndef CLOCKCHART_H
#define CLOCKCHART_H

#include <QWidget>
#include <QTimer>
#include <QPainter>
#include <QMouseEvent>
#include <QPushButton>
#include <QVBoxLayout>
#include <QTime>

class ClockChart : public QWidget
{
    Q_OBJECT
public:
    explicit ClockChart(QWidget *parent = nullptr);
    virtual ~ClockChart();
public:
    // 设置时钟半径
    void setRadius(int radius);
    // 设置更新间隔（参数：毫秒）
    void setUpdateInterval(int interval);
    // 设置计时模式（参数：枚举值）
    enum TimerMode { Countdown, Stopwatch }; // 倒计时和正计时模式
    Q_ENUM(TimerMode)
    Q_DECLARE_FLAGS(TimerModes,TimerMode);
    enum ThemeColor { Dark, Light }; // 枚举类型，表示主题颜色
    Q_ENUM(ThemeColor)
    Q_DECLARE_FLAGS(ThemeColors,ThemeColor);
    void setTimerMode(TimerMode mode);
    void setThemeColor(ClockChart::ThemeColor theme); // 设置主题颜色
    // 设置倒计时起始时间（以秒为单位）
    void setInitialTime(int seconds);
private:
    void setupPauseButton();
    void resetTime();
    void updateButtonPositions();
protected:
    virtual void paintEvent(QPaintEvent *event) override;

    // 鼠标进入事件
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
    virtual void enterEvent(QEnterEvent *event) override;
#else
    virtual void enterEvent(QEvent *event) override;
#endif
    // 鼠标离开事件
    virtual void leaveEvent(QEvent *event) override;
private slots:
    void updateTime();
    void togglePause();
signals:
    void sigClockStatus(bool isPaused);
private:
    int m_radius;                    // 圆圈半径
    bool m_isPaused;                 // 暂停状态

    QPushButton *m_pauseButton;      // 暂停按钮
    QTimer *m_timer;                 // 定时器

    QTime m_currentTime;             // 当前时间
    TimerMode m_mode;      // 当前计时模式
    int m_initialTime;     // 倒计时的起始秒数

    ThemeColor m_themeColor; // 当前主题颜色
};

#endif // CLOCKCHART_H
